home *** CD-ROM | disk | FTP | other *** search
/ Programmer Power Tools / Programmer Power Tools.iso / progjrn / pj_7_6.arc / ALTTEST.PAS < prev    next >
Pascal/Delphi Source File  |  1989-06-07  |  7KB  |  293 lines

  1. Program AltTest;
  2. {
  3.   Overview/Description:
  4.     Exercise the AltMon module.  No operator interaction is required,
  5.     simply invoke, sit back and watch the show.
  6.  
  7.   Compiler/Operating System:
  8.     Turbo-Pascal Ver 5.5
  9.     MS-DOS Ver 3.30
  10.  
  11.   Maintenance History:
  12.     7 June, 1989  G.S.Cole  //Creation//
  13. }
  14. Uses AltMon, CRT;
  15. CONST
  16.   Page_Delay = 4000;  { delay between display panels }
  17.  
  18. Procedure Write_Introduction;
  19. CONST
  20.   Message = 'AltTest - Demonstrate use of two video monitors, simultaneously.';
  21. VAR
  22.   I:Byte;
  23.   Trash:Boolean;
  24. begin { Procedure Write_Introduction }
  25.   ClrScr;
  26.   For I := 1 to 20 do
  27.     Writeln(Message);
  28.   Trash := Swap_Monitor;
  29.   ClrScr;
  30.   For I := 1 to 20 do
  31.     Writeln(Message);
  32.   Delay(Page_Delay);
  33. end; { Procedure Write_Introduction }
  34.  
  35. Procedure Swap_Monitors_Demo;
  36. {
  37.     Demonstrate the ability to swap the active monitor.
  38.     Always exits with the color display as default.
  39. }
  40. VAR
  41.   I:Byte;
  42.   Trash:Boolean;
  43.   Buffer:String[60];
  44. begin { Procedure Swap_Monitors_Demo }
  45.   If NOT Swap_Monitor       { Ensure we start on the color display }
  46.     then Trash := Swap_Monitor;
  47.   If NOT Swap_Monitor
  48.     then Buffer := 'This is the MONOCHROME display.  <<Alternate>>';
  49.   ClrScr;
  50.   For I := 1 to 20 do
  51.     Writeln(Buffer);
  52.   If Swap_Monitor
  53.     then Buffer := 'This is the COLOR display.  <<Primary>>';
  54.   ClrScr;
  55.   For I := 1 to 20 do
  56.     Writeln(Buffer);
  57.   Delay(Page_Delay);
  58. end; { Procedure Swap_Monitors_Demo }
  59.  
  60. Procedure Video_Attributes;
  61. {
  62.     Demonstrate the appearance of various text attributes,
  63.     and how to set them.
  64. }
  65. VAR
  66.   Attribute_Index:AltMon_Attribute_Type;
  67. begin { Procedure Video_Attributes }
  68.   ClrScr;
  69.   Alt_ClrScr;
  70.   Writeln('Primary display demonstrates some video attributes.');
  71.   Alt_Writeln('Alternate display demonstrates video attributes.');
  72.   For Attribute_Index := Alt_Normal to Alt_Blink_Reverse do
  73.     begin
  74.       Alt_Set_Attribute(Attribute_Index);
  75.       Alt_Writeln('Demonstrate Alternate Video Attributes...');
  76.       TextAttr := Alt_TextAttr;
  77.       Writeln('Demonstrate Video Attributes...');
  78.     end;
  79.   Delay(Page_Delay);
  80. end; { Procedure Video_Attributes }
  81.  
  82. Procedure Cursor_Demo;
  83. {
  84.     Demonstrate locating and positioning cursor.
  85. }
  86. VAR
  87.   X, Y:Byte;
  88.   Buffer, Buffer2:String[80];
  89. begin { Procedure Cursor_Demo }
  90.   Buffer := 'This line started at X=10, and Y=20.';
  91.   GoToXY(10, 20);
  92.   Write(Buffer);
  93.   Alt_GoToXY(10, 20);
  94.   Alt_Write(Buffer);
  95.   X := WhereX;
  96.   Y := WhereY;
  97.   STR(X, Buffer);
  98.   STR(Y, Buffer2);
  99.   Buffer := '  New X/Y: ' + Buffer + '/' + Buffer2;
  100.   Writeln(Buffer);
  101.   X := Alt_WhereX;
  102.   Y := Alt_WhereY;
  103.   STR(X, Buffer);
  104.   STR(Y, Buffer2);
  105.   Buffer := '  New X/Y: ' + Buffer + '/' + Buffer2;
  106.   NormVideo;
  107.   Alt_NormVideo;
  108.   Alt_Writeln(Buffer);
  109.   Delay(Page_Delay);
  110. end; { Procedure Cursor_Demo }
  111.  
  112. Procedure Window_Demo1;
  113. {
  114.     Demonstrate reading window limits.
  115. }
  116. VAR
  117.   X, Y:Byte;
  118.   Buffer, Buffer2:String[80];
  119. begin { Procedure Window_Demo1 }
  120.   Writeln('Current Window Minimum X/Y: ', Lo(WindMin), '/', Hi(WindMin));
  121.   Writeln('Current Window Maximum X/Y: ', Lo(WindMax), '/', Hi(WindMax));
  122.   STR(Lo(Alt_WindMin), Buffer);
  123.   STR(Hi(Alt_WindMin), Buffer2);
  124.   Buffer := 'Current Window Minimum X/Y: ' + Buffer + '/' + Buffer2;
  125.   Alt_Writeln(Buffer);
  126.   STR(Lo(Alt_WindMax), Buffer);
  127.   STR(Hi(Alt_WindMax), Buffer2);
  128.   Buffer := 'Current Window Maximum X/Y: ' + Buffer + '/' + Buffer2;
  129.   Alt_Writeln(Buffer);
  130.  
  131.   TextColor(White);
  132.   TextBackGround(Green);
  133.   Alt_Set_Attribute(Alt_Reverse);
  134.   Window(5, 5, 55, 15);
  135.   Alt_Window(5, 5, 55, 15);
  136.   ClrScr;
  137.   Alt_ClrScr;
  138.   STR(Lo(Alt_WindMin), Buffer);
  139.   STR(Hi(Alt_WindMin), Buffer2);
  140.   Buffer := 'Current Window Minimum X/Y: ' + Buffer + '/' + Buffer2;
  141.   Writeln(Buffer);
  142.   Alt_Writeln(Buffer);
  143.   STR(Lo(Alt_WindMax), Buffer);
  144.   STR(Hi(Alt_WindMax), Buffer2);
  145.   Buffer := 'Current Window Maximum X/Y: ' + Buffer + '/' + Buffer2;
  146.   Writeln(Buffer);
  147.   Alt_Writeln(Buffer);
  148.  
  149.   X := Alt_WhereX;
  150.   Y := Alt_WhereY;
  151.   STR(X, Buffer);
  152.   STR(Y, Buffer2);
  153.   Buffer := 'New X/Y: ' + Buffer + '/' + Buffer2;
  154.   Writeln(Buffer);
  155.   Alt_Writeln(Buffer);
  156.   Delay(Page_Delay);
  157. end; { Procedure Window_Demo1 }
  158.  
  159. Procedure Line_Wrap_Demo;
  160. {
  161.     Force a line wrap.  This shows that windows are respected.
  162. }
  163. begin { Procedure Line_Wrap_Demo }
  164.   Alt_Set_Attribute(Alt_Reverse);
  165.   Alt_Write('Of all the fishies in the sea, the ');
  166.   Write('Of all the fishies in the sea, the ');
  167.   Alt_Set_Attribute(Alt_Blink);
  168.   TextColor(Black+Blink);
  169.   Alt_Write('mermaid');
  170.   Write('mermaid');
  171.   Alt_Set_Attribute(Alt_Reverse);
  172.   TextColor(Black);
  173.   Alt_Write(' is the one for me!');
  174.   Write(' is the one for me!');
  175.   Delay(Page_Delay);
  176. end; { Procedure Line_Wrap_Demo }
  177.  
  178. Procedure Scroll_Demo1;
  179. {
  180.     Force the contents of the current window to scroll.
  181. }
  182. VAR
  183.   I:Byte;
  184.   Buffer:String[40];
  185. begin { Procedure Scroll_Demo1 }
  186.   Buffer := 'Scroll Test RYRYRYRYRYRYRYRYRY';
  187.   For I := 1 to 20 do
  188.     begin
  189.       Writeln(Buffer);
  190.       Alt_Writeln(Buffer);
  191.     end;
  192.   Delay(Page_Delay);
  193. end; { Procedure Scroll_Demo1 }
  194.  
  195. Procedure Window_Demo2;
  196. VAR
  197.   I:Byte;
  198.   Buffer, Buffer2:String[80];
  199. begin { Procedure Window_Demo2 }
  200.   Window(1, 1, 80, 25);
  201.   Alt_Window(1, 1, 80, 25);
  202.   Alt_NormVideo;
  203.   ClrScr;
  204.   Alt_ClrScr;
  205.   Buffer := '1234567890123456789012345678901234567890123456789012345678901234567890123456789';
  206.   For I := 1 to 24 do
  207.     begin
  208.       Writeln(Buffer);
  209.       Alt_Writeln(Buffer);
  210.     end;
  211.   Window(5, 5, 60, 15);
  212.   Alt_Window(5, 5, 60, 15);
  213.   Alt_Set_Attribute(Alt_Reverse);
  214.   TextColor(White);
  215.   TextBackGround(Blue);
  216.   ClrScr;
  217.   Alt_ClrScr;
  218.   Buffer2 := 'RYRYRYRYRYRYRYRYRYRYRY';
  219.   Buffer := 'Line1 ' + Buffer2 + ' Line1';
  220.   For I := 0 to 9 do
  221.     begin
  222.       Buffer[5] := Chr(I + $30);
  223.       Buffer[34] := Buffer[5];
  224.       Writeln(Buffer);
  225.       Alt_Writeln(Buffer);
  226.     end;
  227.   Delay(Page_Delay);
  228. end; { Procedure Window_Demo2 }
  229.  
  230. Procedure Insert_Line_Demo;
  231. begin { Procedure Insert_Line_Demo }
  232.   GotoXY(1, 4);
  233.   Alt_GoToXY(1, 4);
  234.   InsLine;
  235.   Alt_InsLine;
  236.   Writeln('New Inserted Line...');
  237.   Alt_Writeln('New Inserted Line...');
  238.   Delay(Page_Delay);
  239. end; { Procedure Insert_Line_Demo }
  240.  
  241. Procedure Delete_Line_Demo;
  242. begin { Procedure Delete_Line_Demo }
  243.   GotoXY(1, 7);
  244.   Alt_GoToXY(1, 7);
  245.   DelLine;
  246.   Alt_DelLine;
  247.   GotoXY(1, 11);
  248.   Alt_GoToXY(1, 11);
  249.   Write('Line 5 deleted...');
  250.   Alt_Write('Line 5 deleted...');
  251.   Delay(Page_Delay);
  252. end; { Procedure Delete_Line_Demo }
  253.  
  254. VAR
  255.   I, X, Y:Byte;
  256.   Buffer, Buffer2:String[255];
  257.  
  258. begin { AltTest Main }
  259.   If Dual_Monitors_Detected then
  260.     begin
  261.       AltMon_Setup;
  262.       TextColor(White);
  263.       TextBackGround(Black);
  264.     end
  265.   else
  266.     begin
  267.       Writeln('Abort!  A monochrome and a color video adapter were not detected.');
  268.       Halt;
  269.     end;
  270.  
  271.   Alt_Cursor_Disable;
  272.   Write_Introduction;
  273.   Swap_Monitors_Demo;
  274.   Video_Attributes;
  275.   Cursor_Demo;
  276.   Window_Demo1;
  277. {
  278.     Clear to EOL
  279. }
  280.   Alt_NormVideo;
  281.   TextBackGround(White);
  282.   TextColor(Black);
  283.   ClrEOL;
  284.   Writeln('** ClrEOL **');
  285.   Alt_ClrEOL;
  286.   Alt_Writeln('** Alt_ClrEOL **');
  287.  
  288.   Line_Wrap_Demo;
  289.   Scroll_Demo1;
  290.   Window_Demo2;
  291.   Insert_Line_Demo;
  292.   Delete_Line_Demo;
  293. end. { AltTest Main }